/******************************************************************************
 * 文 件 名   : timer.c
 * 版 本 号   : V1.0
 * 作    者   : pinot
 * 生成日期   : 2019年11月18日
 * 功能描述   : 定时器应用
 * 修改历史   :
 * 日    期   :
 * 作    者   :
 * 修改内容   :
 ******************************************************************************/

/*****************************************************************************
自定义头文件*/
#include "timer.h"
#include "uart.h"
/*****************************************************************************
全局变量*/
u16 data SysTick_RTC           = 0;
u32 data SysTick               = 0;
u32 data SysDelayTick          = 0;
data _TKS_FLAGA_type timerFlag = {0};

//串口3接收超时定时器
u16 data Uart3RxCt = 0;
/*****************************************************************************
定时器0*/
void T0_Init(void)
{
    TMOD |= 0x01;
    TH0 = T1MS >> 8;  // 1ms定时器
    TL0 = T1MS;
    ET0 = 1;  //开启定时器0中断
    TR0 = 1;  //开启定时器
    EA  = 1;  //开总中断
}
void T0_ISR_PC(void) interrupt 1
{
    EA  = 0;
    TH0 = T1MS >> 8;
    TL0 = T1MS;
    WDT_RST();
    SysTick_RTC++;
    if (SysTick_RTC >= 500)
    {
        timer500msFlag = 1;
        SysTick_RTC    = 0;
    }
    SysTick++;
    if (SysTick % 100 == 0)
        timer100msFlag = 1;
    timer1msFlag = 1;
    EA           = 1;
}
/*****************************************************************************
 函 数 名  : void T1_Init(void)
 功能描述  : 定时器1初始化	定时间隔1ms
 输入参数  :
 输出参数  :
 修改历史  :
  1.日    期   : 2019年4月2日
    作    者   : chengjing
    修改内容   : 创建
*****************************************************************************/
void T1_Init(void)
{
    TMOD |= 0x01;
    TH1 = T1MS >> 8;  // 1ms定时器
    TL1 = T1MS;
    ET1 = 1;  //开启定时器0中断
    EA  = 1;  //开总中断
    TR1 = 1;  //开启定时器
}

/*****************************************************************************
 函 数 名  : void T1_ISR_PC(void)    interrupt 3
 功能描述  : 定时器1处理函数，提供RTC计时和处理
 输入参数  :
 输出参数  :
 修改历史  :
  1.日    期   : 2019年4月2日
    作    者   : chengjing
    修改内容   : 创建
*****************************************************************************/
void T1_ISR_PC(void) interrupt 3
{
    EA  = 0;
    TH1 = T1MS >> 8;
    TL1 = T1MS;
    ////////////////////////////
    ////////////////////////////////

    EA = 1;
}
/*****************************************************************************
定时器2*/
void T2_Init(void)
{
    T2CON = 0x70;
    TH2   = 0x00;
    TL2   = 0x00;
    TRL2H = 0xBC;
    TRL2L = 0xCD;  // 1ms的定时器
    // TRL2H = 0xFF;
    // TRL2L = 0xEF;  // 1us的定时器
    IEN0 |= 0x20;  //开启定时器2
    TR2 = 0x01;
}
void T2_ISR_PC(void) interrupt 5
{
    TF2 = 0;
    if (Uart3RxCt == 0)
    {
        Uart3_TTL_Status = 0;
    }
    else
    {
        Uart3RxCt--;
    }
    SysDelayTick--;
    // WDT_RST();
}
/*****************************************************************************
定时器总配置*///delayus
void InitTimer(void)
{
    T0_Init();
    // T1_Init();
    T2_Init();
}
